using CatLib;
using GameFramework.App;
using GameFramework.Camera.Standard;
using GameFramework.Configuration.Luban;
using GameFramework.CoroutineLock;
using GameFramework.Database.SQLite;
using GameFramework.DebugCommand;
using GameFramework.DynamicText;
using GameFramework.Event;
using GameFramework.File.BetterStreaming;
using GameFramework.Fsm;
using GameFramework.GameServer;
using GameFramework.Http;
using GameFramework.Json;
using GameFramework.Localization;
using GameFramework.Network;
using GameFramework.ObjectPool;
using GameFramework.Path.Unity;
using GameFramework.Persistence.Database;
using GameFramework.Procedure.Fsm;
using GameFramework.Reference;
using GameFramework.Reflect;
using GameFramework.Res.YooAsset;
using GameFramework.Route;
using GameFramework.Rpc;
using GameFramework.Scene.YooAsset;
using GameFramework.ScreenAdaptor;
using GameFramework.Timer;
using GameFramework.UI;
using GameFramework.UnityConsole;
using GameFramework.Update;
using GameFramework.WebServer;

namespace GameFramework
{
    [AppBootstrap(Priority = int.MaxValue)]
    public sealed class GameFrameworkBootstrap : IBootstrap
    {
        public void Bootstrap()
        {
            CatLib.App.That.Register(new UnityConsoleLogServiceProvider());
            CatLib.App.That.Register(new CatLibEventServiceProvider());
            CatLib.App.That.Register(new UnityPathServiceProvider());
            CatLib.App.That.Register(new BetterStreamingFileServiceProvider());
            CatLib.App.That.Register(new ReflectServiceProvider());
            CatLib.App.That.Register(new ReferenceServiceProvider());
            CatLib.App.That.Register(new UnityHttpServiceProvider());
            CatLib.App.That.Register(new WebServerServiceProvider());
            CatLib.App.That.Register(new RpcServiceProvider());
            CatLib.App.That.Register(new RouteServiceProvider());
            CatLib.App.That.Register(new CoroutineLockServiceProvider());
            CatLib.App.That.Register(new YooAssetResServiceProvider());
            CatLib.App.That.Register(new YooAssetSceneServiceProvider());
            CatLib.App.That.Register(new ObjectPoolServiceProvider());
            CatLib.App.That.Register(new UpdateServiceProvider());
            CatLib.App.That.Register(new FsmServiceProvider());
            CatLib.App.That.Register(new FsmProcedureServiceProvider());
            CatLib.App.That.Register(new LubanConfigurationServiceProvider());
            CatLib.App.That.Register(new LocalizationServiceProvider());
            CatLib.App.That.Register(new SQLiteDatabaseServiceProvider());
            CatLib.App.That.Register(new DatabasePersistenceServiceServiceProvider());
            CatLib.App.That.Register(new TimerServiceProvider());
            CatLib.App.That.Register(new UIServiceProvider());
            CatLib.App.That.Register(new CatJsonServiceProvider());
            CatLib.App.That.Register(new FairyGUIDynamicTextServiceProvider());
            CatLib.App.That.Register(new NetworkServiceProvider());
            CatLib.App.That.Register(new GameServerServiceProvider());
            CatLib.App.That.Register(new StandardCameraServiceProvider());
            CatLib.App.That.Register(new ScreenServiceProvider());
            CatLib.App.That.Register(new DebugCommandServiceProvider());
        }
    }
}